\chapter{简介}
\label{ch:introduction}

\section{欢迎使用}

欢迎阅读 \textbf{C\# 到 C++ 转换系统}（cpp-orchestrator）中文用户手册。本手册将带领您全面了解、安装并高效使用该工具，把 C\# 源代码转换为符合 C++20 规范的可生产代码。

cpp-orchestrator 是一款经过实战检验的高级转译器，在第三阶段测试中已经在多个真实项目上实现了 \textbf{100\% 的编译通过率}。手册将按照从入门到进阶的顺序介绍系统的方方面面。

\section{什么是 cpp-orchestrator？}

cpp-orchestrator 是一个自动化转换系统，可以将 C\# 源代码生成现代 C++ 代码。与简单的文本替换脚本不同，cpp-orchestrator 依赖 Roslyn 编译平台进行语义分析，输出结构清晰、风格现代且符合最佳实践的 C++ 代码。

\subsection{核心特性}

\begin{itemize}[leftmargin=*]
    \item \textbf{高通过率：} 在 Phase 3 测试套件中对 4 个仓库的 11 个文件实现 100\% 编译成功
    \item \textbf{语义分析：} 借助 Microsoft Roslyn 获取精准的 C\# 抽象语法树与语义信息
    \item \textbf{智能类型映射：} 自动完成常见类型转换：
    \begin{itemize}
        \item \code{string} $\rightarrow$ \code{std::string}
        \item \code{List<T>} $\rightarrow$ \code{std::vector<T>}
        \item \code{Dictionary<K,V>} $\rightarrow$ \code{std::unordered\_map<K,V>}
        \item \code{Action<T>} $\rightarrow$ \code{std::function<void(T)>}
        \item \code{T?} $\rightarrow$ \code{std::optional<T>}
    \end{itemize}
    \item \textbf{命名规范转换：} 自动完成 PascalCase 到 snake\_case 的转换，并正确处理缩写（如 \code{UserID} $\rightarrow$ \code{user\_id}）
    \item \textbf{属性展开：} C\# 属性会扩展为带私有字段的 getter/setter 对
    \item \textbf{桩代码生成：} 缺失的外部依赖可以自动生成桩类
    \item \textbf{现代 C++：} 输出符合 C++20 标准、充分利用标准库能力的代码
    \item \textbf{转换效率：} 平均转换速度达 2.45 个文件/秒
    \item \textbf{生产级输出：} 生成代码在严格警告设置下零告警、零错误
\end{itemize}

\subsection{支持的语言特性}

\begin{table}[h]
\centering
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{特性} & \textbf{支持情况} \\
\midrule
类 & 完全支持 \\
属性 & 展开为 getter/setter \\
方法 & 完全支持 \\
构造函数 & 完全支持 \\
字段 & 完全支持 \\
泛型类型 & 映射为 C++ 模板 \\
委托 & 转换为 \code{std::function} \\
可空类型 & 转换为 \code{std::optional} \\
集合类型 & 映射到 STL 容器 \\
命名空间 & 转换为 C++ 命名空间 \\
继承 & 完全支持 \\
虚函数 & 完全支持 \\
\bottomrule
\end{tabularx}
\caption{C\# 语言特性支持矩阵}
\label{tab:feature-support}
\end{table}

\subsection{尚未支持的特性}

虽然 cpp-orchestrator 已覆盖大量 C\# 特性，但仍有一些高级特性处于规划阶段：

\begin{itemize}[leftmargin=*]
    \item LINQ 查询表达式（预计 Phase 4 引入）
    \item \code{async/await} 协程模式（预计 Phase 5 引入）
    \item 反射 API（ C++ 反射能力有限）
    \item dynamic 动态类型（C++ 为静态类型）
    \item 某些 .NET 专有能力（例如特性、GC 管理等）
\end{itemize}

用户可以在后续章节中了解与这些限制相关的规避方式以及路线图。
